// add.js
import { addActivity, updateActivity } from '../../../utils/activity'
Page({
  data: {
    // 表单数据
    formData: {
      id: '',
      title: '',
      leader: '',
      startTime: '',
      endTime: '',
      location: '',
      description: '',
      participants: '',
      status: ''
    },
    // 时间选择器相关数据
    startTimeRanges: [
      // 年
      Array.from({ length: 10 }, (_, i) => (new Date().getFullYear() + i - 5).toString()),
      // 月
      Array.from({ length: 12 }, (_, i) => (i + 1).toString().padStart(2, '0')),
      // 日
      Array.from({ length: 31 }, (_, i) => (i + 1).toString().padStart(2, '0')),
      // 时
      Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0')),
      // 分
      Array.from({ length: 60 }, (_, i) => i.toString().padStart(2, '0'))
    ],
    startTimeArray: [5, 0, 0, 0, 0], // 默认选择当前年份、1月1日 00:00

    endTimeRanges: [
      // 年
      Array.from({ length: 10 }, (_, i) => (new Date().getFullYear() + i - 5).toString()),
      // 月
      Array.from({ length: 12 }, (_, i) => (i + 1).toString().padStart(2, '0')),
      // 日
      Array.from({ length: 31 }, (_, i) => (i + 1).toString().padStart(2, '0')),
      // 时
      Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0')),
      // 分
      Array.from({ length: 60 }, (_, i) => i.toString().padStart(2, '0'))
    ],
    endTimeArray: [5, 0, 0, 0, 0], // 默认选择当前年份、1月1日 00:00

    // 编辑模式
    isEditMode: false,
    activityId: '',

    // 表单验证错误
    errors: {}
  },

  onLoad: function (options) {
    //如果是编辑模式
    if (options && options.id) {
      this.loadActivityData(options.id);
      this.setData({
        isEditMode: true,
        activityId: options.id
      });
    }
    // 获取状态栏高度
    const systemInfo = wx.getSystemInfoSync();
    this.setData({
      statusBarHeight: systemInfo.statusBarHeight
    });
  },
  /**
   * 处理输入框变化
   */
  inputChange: function (e) {
    const field = e.currentTarget.dataset.field;
    const value = e.detail.value;
    const newData = {};
    newData[`formData.${field}`] = value;
    this.setData(newData);
    // console.log('表单数据:', this.data.formData);
  },

  // 加载活动数据（编辑模式）
  loadActivityData: function (id) {
    wx.showLoading({
      title: '加载中...',
    });

    // 这里应该是从API获取数据，这里模拟一些数据
    setTimeout(() => {
      const activityData = {
        id: '1',
        title: '活动主题',
        leader: '负责人',
        startTime: '2025-01-01 00:00',
        endTime: '2025-01-01 00:00',
        location: '活动地点',
        description: '活动情况描述',
        participants: '活动参与人员',
        status: '活动状态'
      };

      this.setData({
        formData: activityData,
      });

      wx.hideLoading();
    }, 800);
  },


  /**
   * 开始时间选择器列变化事件
   */
  startTimeColumnChange: function (e) {
    const column = e.detail.column;
    const value = e.detail.value;
    const startTimeRanges = this.data.startTimeRanges;
    const startTimeArray = this.data.startTimeArray;

    // 更新当前列的选择索引
    startTimeArray[column] = value;

    // 根据年月更新日期的范围
    if (column === 0 || column === 1) {
      const year = parseInt(startTimeRanges[0][startTimeArray[0]]);
      const month = parseInt(startTimeRanges[1][startTimeArray[1]]);
      const daysInMonth = new Date(year, month, 0).getDate();

      // 更新日期范围
      startTimeRanges[2] = Array.from({ length: daysInMonth }, (_, i) => (i + 1).toString().padStart(2, '0'));

      // 确保日期不超过当月天数
      if (startTimeArray[2] >= daysInMonth) {
        startTimeArray[2] = daysInMonth - 1;
      }
    }

    this.setData({
      startTimeRanges: startTimeRanges,
      startTimeArray: startTimeArray
    });
  },

  /**
   * 开始时间选择器确认事件
   */
  startTimeChange: function (e) {
    const values = e.detail.value;
    const startTimeRanges = this.data.startTimeRanges;

    // 获取选中的年月日时分
    const year = startTimeRanges[0][values[0]];
    const month = startTimeRanges[1][values[1]];
    const day = startTimeRanges[2][values[2]];
    const hour = startTimeRanges[3][values[3]];
    const minute = startTimeRanges[4][values[4]];

    // 格式化为 yyyy-MM-dd HH:mm 格式
    const startTime = `${year}-${month}-${day} ${hour}:${minute}`;

    this.setData({
      'formData.startTime': startTime,
      startTimeArray: values
    });
  },

  /**
   * 结束时间选择器列变化事件
   */
  endTimeColumnChange: function (e) {
    const column = e.detail.column;
    const value = e.detail.value;
    const endTimeRanges = this.data.endTimeRanges;
    const endTimeArray = this.data.endTimeArray;

    // 更新当前列的选择索引
    endTimeArray[column] = value;

    // 根据年月更新日期的范围
    if (column === 0 || column === 1) {
      const year = parseInt(endTimeRanges[0][endTimeArray[0]]);
      const month = parseInt(endTimeRanges[1][endTimeArray[1]]);
      const daysInMonth = new Date(year, month, 0).getDate();

      // 更新日期范围
      endTimeRanges[2] = Array.from({ length: daysInMonth }, (_, i) => (i + 1).toString().padStart(2, '0'));

      // 确保日期不超过当月天数
      if (endTimeArray[2] >= daysInMonth) {
        endTimeArray[2] = daysInMonth - 1;
      }
    }

    this.setData({
      endTimeRanges: endTimeRanges,
      endTimeArray: endTimeArray
    });
  },

  /**
   * 结束时间选择器确认事件
   */
  endTimeChange: function (e) {
    const values = e.detail.value;
    const endTimeRanges = this.data.endTimeRanges;

    // 获取选中的年月日时分
    const year = endTimeRanges[0][values[0]];
    const month = endTimeRanges[1][values[1]];
    const day = endTimeRanges[2][values[2]];
    const hour = endTimeRanges[3][values[3]];
    const minute = endTimeRanges[4][values[4]];

    // 格式化为 yyyy-MM-dd HH:mm 格式
    const endTime = `${year}-${month}-${day} ${hour}:${minute}`;

    this.setData({
      'formData.endTime': endTime,
      endTimeArray: values
    });
  },

  // 表单验证
  validateForm: function (formData) {
    let errors = {};

    // 必填项验证
    if (!formData.title || formData.title.trim() === '') {
      errors.title = '请输入主题';
    }
    if (!formData.leader || formData.leader.trim() === '') {
      errors.leader = '请输入负责人';
    }
    if (!formData.startTime || formData.startTime.trim() === '') {
      errors.startTime = '请输入开始时间';
    }
    if (!formData.endTime || formData.endTime.trim() === '') {
      errors.endTime = '请输入结束时间';
    }

    this.setData({
      errors
    });
    return Object.keys(errors).length === 0;
  },

  // 提交表单
  submitForm: function (e) {

    var formData = this.data.formData;

    console.log('表单数据:', formData);

    // 表单验证
    if (!this.validateForm(formData)) {
      // 显示第一个错误
      const firstError = Object.values(this.data.errors)[0];
      this.showToast(firstError);
      return;
    }
    // 编辑模式
    if (this.data.isEditMode) {
      formData.id = this.data.activityId;
      //发起请求
    } else {
      //添加模式
      // 在实际项目中，这里应该将数据提交到服务器
      // 这里只是模拟提交成功
      wx.showLoading({
        title: '提交中...',
      });

      setTimeout(() => {
        wx.hideLoading();
        addActivity(formData).then(res => {
          // console.log(res);
        });
        wx.showToast({
          title: this.data.isEditMode ? '修改成功' : '添加成功',
          icon: 'success',
          duration: 2000,
          // success: () => {
          //   // // 延迟返回上一页
          //   // setTimeout(() => {
          //   //   wx.navigateBack();
          //   // }, 2000);
          // }
        });
      }, 1500);
    }

  },

  // 显示提示信息
  showToast: function (message) {
    wx.showToast({
      title: message,
      icon: 'none',
      duration: 2000
    });
  },

  // 返回上一页
  goBack: function () {
    // 如果表单已经有内容，提示用户是否确认放弃编辑
    if (this.data.photoPath ||
      this.data.formData.name ||
      this.data.formData.phone) {
      wx.showModal({
        title: '提示',
        content: '确定放弃编辑并返回吗？',
        success: (res) => {
          if (res.confirm) {
            wx.navigateBack();
          }
        }
      });
    } else {
      wx.navigateBack();
    }
  }
});